home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Purity / Purity #48 (1995-06-25)(PackMAN)(DE)[WB].zip / Purity #48 (1995-06-25)(PackMAN)(DE)[WB].adf / Palette / Palette_OS2.p < prev    next >
Text File  |  1995-06-23  |  3KB  |  130 lines

  1. PROGRAM palettedemo1;
  2.  
  3.  { Gadtools-Palette OS2.x revision for RogerSoft`s Demo
  4.  
  5.   (c) by PackMAN 19.6.95
  6.  
  7.  
  8.   wichtig: man sollte immer die TextAttribute für Gadtools-Gadgets
  9.            übergeben, dieses fehlt bei RogerSoft, unter OS2 wird
  10.            sonst kein Gaget initialisiert...
  11.  
  12.   Unterschiede zu OS3.x Variante:
  13.  
  14.    - Indicatoren anders aufgebaut (siehe Screen-Shots)
  15.    - unter OS2.x muß für die Tastaturunterstützung mangels
  16.      GT_GetGadgetAttrs eine Hilfvariable mitgeschleppt werden...}
  17.  
  18.   USES gadtools;
  19.  
  20.   VAR win   : p_window;
  21.       t     : Array[1..15] OF TagItem;
  22.       di    : p_drawinfo;
  23.       vi    : PTR;
  24.       msg   : p_intuimessage;
  25.       ng    : newgadget;
  26.       gad   : p_gadget;
  27.       glist : p_gadget;
  28.       pgad  : p_gadget;
  29.       aktgad: p_gadget;
  30.       pscr  : p_screen;
  31.       ende  : BOOLEAN;
  32.  farbanzahl : LONG;    { Anzahl der Farben }
  33.         num : INTEGER; { aktuelle Farbnummer / angesprochene Hilfsvariable}
  34.       txattr: TextAttr;
  35.  
  36. FUNCTION OS2:BOOLEAN;
  37. VAR lib:p_library;
  38.  BEGIN
  39.   lib:=sysbase;
  40.   os2:=(lib^.lib_version>=37);
  41.  END;
  42.  
  43.  PROCEDURE oberflaeche;
  44.   BEGIN
  45.    num:=0;
  46.    t[1]:=tagItem(GT_underscore,ORD('_'));
  47.    t[2]:=TagItem(GTPA_depth,di^.dri_depth);  { Anzahl der Bitplanes }
  48.    t[3]:=TagItem(GTPA_Indicatorheight,30);   { Höhe+Breite des Indicatorfeldes,}
  49.    t[4]:=TagItem(GTPA_Indicatorwidth,30);    { welches die Farbe anzeigt. Ab OS3.0 egal}
  50.    t[5]:=TagItem(GTPA_Color,num);            { Aktuelle Farbe }
  51.    t[6].ti_tag:=Tag_Done;
  52.    ng:=newgadget(100,35,200,150,'_Palette',^txAttr,1,Placetext_left,vi,NIL);
  53.    gad:=CreateGadgetA(PALETTE_KIND,pgad,^ng,^t);
  54.  
  55.   t[1]:=TagItem(WA_InnerWidth,400);
  56.   t[2]:=TagItem(WA_InnerHeight,180);
  57.   t[3].ti_Tag:=WA_Title;
  58.   t[3].ti_data:='PALETTE_KIND DEMO OS2.x 19.06.95 by PackMAN';
  59.   t[4]:=TagItem(WA_Idcmp,IDCMP_CLOSEWINDOW+IDCMP_GADGETUP+IDCMP_RAWKEY);
  60.   t[5]:=TagItem(WA_Flags,WFLG_CLOSEGADGET+WFLG_DRAGBAR+WFLG_ACTIVATE+
  61.                 WFLG_DEPTHGADGET+WFLG_SMART_REFRESH+WFLG_NOCAREREFRESH);
  62.   t[6]:=TagItem(WA_Left,75);
  63.   t[7]:=TagItem(WA_Top,30);
  64.   t[8]:=TagItem(WA_Gadgets,LONG(glist));
  65.   t[9].ti_Tag:=TAG_DONE;
  66.   win:=OpenWindowTaglist(NIL,^t);
  67.   IF win=NIL THEN exit;
  68.   GT_Refreshwindow(Win,NIL);
  69.  END;
  70.  
  71.  BEGIN
  72.  IF NOT OS2 THEN exit;
  73.  
  74.   ende:=FALSE;
  75.   pscr:=lockpubScreen('Workbench');
  76.   di:=NIL;
  77.   di:=getscreendrawinfo(pscr);
  78.   IF (di=NIL) THEN exit;
  79.   freescreendrawinfo(pscr,di);
  80.   vi:=NIL;
  81.   vi:=GetVisualInfoA(pscr,NIL);
  82.   unLockPubScreen(NIL,pscr);
  83.   Glist:=NIL;
  84.   pgad:=CreateContext(^Glist);
  85.   IF (pgad=NIL) OR (vi=NIL) THEN exit;
  86.  
  87.   txattr:=TextAttr('topaz.font',8,0,0);
  88.  
  89.   farbanzahl:=1;
  90.   FOR num:=1 TO di^.dri_depth DO farbanzahl:=farbanzahl*2;
  91.  
  92.   oberflaeche;
  93.  
  94.   REPEAT
  95.    msg:=Wait_Port(win^.UserPort);
  96.    msg:=GT_getImsg(win^.userport);
  97.     GT_ReplyImsg(msg);
  98.     CASE msg^.Class OF
  99.      IDCMP_GadgetUP:
  100.        BEGIN
  101.         aktgad:=msg^.iaddress;
  102.         CASE aktgad^.gadgetID OF
  103.         1: num:=Msg^.Code;
  104.         ELSE END;
  105.        END;
  106.  
  107.       IDCMP_RAWKEY:
  108.        BEGIN
  109.         CASE msg^.code OF
  110.     {p}  25:  BEGIN
  111.                IF num<farbanzahl-1 THEN inc(num) ELSE num:=0;
  112.  
  113.                t[1]:=TagItem(GTPA_Color,num);
  114.                t[2].ti_tag:=Tag_Done;
  115.                GT_SetGadgetAttrsA(gad,win,NIL,^t);
  116.               END;
  117.         $45: ende:=true;
  118.         ELSE END;
  119.        END;
  120.  
  121.      IDCMP_CLOSEWINDOW: ende:=TRUE;
  122.  
  123.      ELSE END; {OF CASE }
  124.   UNTIL ende;
  125.   Closewindow(win);
  126.   Freegadgets(glist);
  127.   Freevisualinfo(vi);
  128.  END.
  129.  
  130.